import { _decorator, Component } from 'cc';
import { UILayer } from './UILayer';
import { UIManager } from '../UIManager';
export abstract class UIPanel extends Component {
    /**
     * 层级
     */
    protected abstract _layer: UILayer;
    public get layer(): UILayer { return this._layer; };
    /**
     * 在字典中的名字
     */
    public panelName: string = "";

    /**
     * 界面初始化
     * @param data 参数（需要继承自IUIData）
     */
    public abstract OnInit(data?: any): void;

    /**
     * 显示界面
     * @param data 参数（需要继承自IUIData）
     */
    public abstract OnShow(data?: any): void;

    /**
     * 隐藏界面
     */
    public abstract OnHide(): void;

    /**
     * 销毁界面
     */
    public abstract OnDestroy(): void;

    /**
     * 显示界面
     * @param data 
     */
    public Show(data?: any) {
        this.node.active = true;
        this.OnShow(data);
    }

    /**
     * 隐藏界面
     */
    public Hide() {
        UIManager.Instance.Hide(this.panelName);
    }

    /**
     * 销毁界面
     */
    public Destroy() {
        UIManager.Instance.Destroy(this.panelName);
    }
}